package sprint2;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.Serializable;
import java.util.Scanner;

/**
 * Minigame-Quest
 * @author Michael de Kaste
 *
 */
public class Gaussometer implements Serializable {
	/**
	 * getalwaardes zegt het al, de waardes van het getal
	 * getalkeerofplus is als een getal "uit" staat.
	 * bijv:   a * 1 = a
	 *         a + 0 = a 
	 * de 1 en 0 staat voor * of +
	 * getaluiteindelijk is of getalkeerofplus waarde of getalwaardes waarde, het hangt er vanaf wat aan is.
	 */
    Scanner s = new Scanner(System.in);
    public int[] getalwaardes = {9,24,9,4,7,4,7,3,2};
    public int[] getalkeerofplus = {1,0,0,0,1,1,0,1,1};
    public int[] getaluiteindelijk = {1,0,0,0,1,1,0,1,1};
    private boolean[] b = {false,false,false,false,false,false,false,false,false};

    /**
     * 
     * hier begint alles, er wordt gekeken welk nummer je wilt omdraaien en die wordt vervolgens omgezet in getaluiteindelijk.
     * als de rekenmethode uitkomt op 1337, dan is het klaar
     */
    public void gaussometerRun(){
    	// begin output voor eerste keer.
        printOut("gaussometer.txt");
        System.out.println("|\t\t      1% \t\t       |");
        System.out.println("+----------------------------------------------+");
        int druk = 1;
        for(int i = 0 ; i < 9 ; i++){
            if (b[i] == true){
                getaluiteindelijk[i] = getalwaardes[i];
                System.out.println("getal " + (i+1) + " staat aan!");
            } else {
                getaluiteindelijk[i] = getalkeerofplus[i];
                System.out.println("getal " + (i+1) + " staat uit!");
            }
        }
        // einde begin output
        while (druk != 1337){
        	System.out.println("Druk een getal in");
        	int input = s.nextInt();
        	b[input-1] = !b[input-1];
        	for(int i = 0 ; i < 9 ; i++){
        		if (b[i] == true){
        			getaluiteindelijk[i] = getalwaardes[i];
        		} else {
        			getaluiteindelijk[i] = getalkeerofplus[i];
        		}
        	}
        	//rekenmethode om de druk uit te rekenen.
        	druk = (((((((((1 + getaluiteindelijk[1]) *getaluiteindelijk[0]) * getaluiteindelijk[5]) - getaluiteindelijk[3]) *getaluiteindelijk[8]) +getaluiteindelijk[6]) -getaluiteindelijk[2]) *getaluiteindelijk[7]) *getaluiteindelijk[4]);
        	printOut("gaussometer.txt");
        	System.out.println("|\t\t     "+druk+"% \t\t       |");
        	System.out.println("+----------------------------------------------+");
        	
        	for(int i = 0 ; i < 9 ; i++){
                 if (b[i] == true){
                     System.out.println("getal " + (i+1) + " staat aan!");
                 } else {
                     System.out.println("getal " + (i+1) + " staat uit!");
                 }
        	}
        }
        System.out.println("Het is je gelukt");
    }


    static void printOut(String filename) {
		BufferedReader in = null;
		try {
			File file = new File(filename);
			in = new BufferedReader(new FileReader(file));
		} catch (FileNotFoundException e) {
			System.out.println("The file doesn't exist.");
			System.exit(0);
		} catch (IOException e) {
			System.out.println("I/O Error");
			System.exit(0);
		}
		try {
			while (in.ready()) {
				System.out.println(in.readLine());
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}